--[[
     Created by IntelliJ IDEA.
     User: 毛凯
     Date: 2017/11/27
     Time: 9:38
    功能：添加模版 yjx_search_add_uni_item
    参数：ARGV[1]:uni_item_id，统一模版id，
    参数：ARGV[2]:show_type_id，一级分类，
    参数：ARGV[3]:keywords，关键字字符串,以半角逗号分割，形如：'蓝色,商务,名片'
    参数：ARGV[4]:info，搜索结果字符串
    参数：ARGV[5]:set_id,模板组id
    参数：ARGV[6]:hot_sort，排序字段，越大越靠前
    参数：ARGV[7]:date_sort，排序字段，越大越靠前
    参数：ARGV[8]:order_sort,排序字段，越小越靠前
    参数: ARGV[9]:upd_sort,排序字段,越大越靠前(更新时间排序)
    返回：0表示成功，1表示失败
--]]

-- ########################################################

-- 统一模板的前缀uni_item_id
local PREFIX_UNI = "uii_"
-- 分类的前缀
local PREFIX_TYPE = "type_id_"
-- 热度排序的key
local KEY_HOT_SORT = "hot_sort"
-- 时间排序的key
local KEY_DATE_SORT = "date_sort"
-- order排序的key
local KEY_ORDER_SORT = "order_sort"
-- keyword的前缀
local PREFIX_KEYWORD = "kwd_"
-- set_id的前缀
local PREFIX_SET_ID = "si_"
-- 更新时间排序的key
local KEY_UPD_SORT = "upd_sort"


-- key的连接符号
local PREFIX_S = "*"
-- 数组字符串的分割符号
local PREFIX_ARRAY_SPLIT = ","


-- #######################华丽的分割线#################################
-- “统一模版id”集合
local key1 = PREFIX_UNI..ARGV[1]

-- #######################华丽的分割线#################################
-- “一级分类－模版缓存”集合
local key2 = PREFIX_TYPE..ARGV[2]
redis.call('SADD',key2, key1)

-- #######################华丽的分割线#################################
-- “关键字－模版缓存”集合
local keywords = string.split(ARGV[3], PREFIX_ARRAY_SPLIT)
if(keywords~=nil)
then
     local k_len = #keywords
     if(k_len>0)
     then
          for i= 1, k_len do
               local key3 = PREFIX_KEYWORD..string.upper(keywords[i])
               redis.call('SADD',key3, key1)
          end
     end
end

-- ##########################华丽的分割线##############################
-- "id－模版缓存”hash表
local key4 = key1
redis.call('hmset',key4, 'search_result', ARGV[4])

-- #######################华丽的分割线#################################
-- “set_id模版缓存”
local key5 = PREFIX_SET_ID..ARGV[5]
redis.call('SADD',key5, key1)

-- ##########################华丽的分割线##############################
-- “模版－排序字段”有序集合   ARGV[6]:hotSort，排序字段，越小越靠前
local key6 = KEY_HOT_SORT
local hotSort = tonumber(ARGV[6]) or 0

redis.call('zadd',key6, hotSort, key1)

-- ##########################华丽的分割线##############################
-- “模版－排序字段”有序集合   ARGV[7]:dateSort，排序字段，越小越靠前
local key7 = KEY_DATE_SORT
local dateSort = tonumber(ARGV[7]) or 0

redis.call('zadd',key7, dateSort, key1)

-- ###########################华丽的分割线#############################
-- “模版－排序字段”有序集合   ARGV[8]:orderSort，排序字段，越小越靠前
local key8 = KEY_ORDER_SORT
local orderSort = tonumber(ARGV[8]) or 0
redis.call('zadd',key8, orderSort, key1)

-- ###########################华丽的分割线#############################
-- “模版－排序字段”有序集合   ARGV[9]:updSort，先按order排,在按update排序字段，越大越靠前
local key9 = KEY_UPD_SORT
local sort ="0.".. tonumber(ARGV[9]) or 0
local res = 1 - sort
local updSort = orderSort+res

redis.call('zadd',key9, updSort, key1)

-- ###########################华丽的分割线#############################
return 0